srcdir       = @srcdir@
top_builddir = @top_builddir@
top_srcdir   = @top_srcdir@

SCM_CATEGORY = gauche

include ../Makefile.ext

LIBFILES = gauche--collection.$(SOEXT) \
           gauche--sequence.$(SOEXT)   \
           gauche--dictionary.$(SOEXT)   \
           gauche--parameter.$(SOEXT)  \
           gauche--hook.$(SOEXT) \
	   gauche--record.$(SOEXT) \
	   gauche--generator.$(SOEXT) \
	   gauche--unicode.$(SOEXT)
SCMFILES = collection.sci \
           sequence.sci   \
	   dictionary.sci \
           parameter.sci  \
           hook.sci \
	   record.sci \
	   generator.sci \
	   unicode.sci

GENERATED = Makefile
XCLEANFILES = *.c $(SCMFILES)

all : $(LIBFILES)

OBJECTS = $(gauche-collection_OBJECTS) \
	  $(gauche-sequence_OBJECTS) \
	  $(gauche-dictionary_OBJECTS) \
	  $(gauche-parameter_OBJECTS) \
	  $(gauche-hook_OBJECTS) \
	  $(gauche-record_OBJECTS) \
	  $(gauche-generator_OBJECTS) \
	  $(gauche-unicode_OBJECTS)

# gauche.collection
gauche-collection_OBJECTS = gauche--collection.$(OBJEXT)

gauche--collection.$(SOEXT) : $(gauche-collection_OBJECTS)
	$(MODLINK) gauche--collection.$(SOEXT) $(gauche-collection_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--collection.c collection.sci : $(top_srcdir)/libsrc/gauche/collection.scm
	$(PRECOMP) -e -P -o gauche--collection $(top_srcdir)/libsrc/gauche/collection.scm


# gauche.sequence
gauche-sequence_OBJECTS = gauche--sequence.$(OBJEXT)

gauche--sequence.$(SOEXT) : $(gauche-sequence_OBJECTS)
	$(MODLINK) gauche--sequence.$(SOEXT) $(gauche-sequence_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--sequence.c sequence.sci : $(top_srcdir)/libsrc/gauche/sequence.scm
	$(PRECOMP) -e -P -o gauche--sequence $(top_srcdir)/libsrc/gauche/sequence.scm


# gauche.dictionary
gauche-dictionary_OBJECTS = gauche--dictionary.$(OBJEXT)

gauche--dictionary.$(SOEXT) : $(gauche-dictionary_OBJECTS)
	$(MODLINK) gauche--dictionary.$(SOEXT) $(gauche-dictionary_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--dictionary.c dictionary.sci : $(top_srcdir)/libsrc/gauche/dictionary.scm
	$(PRECOMP) -e -P -o gauche--dictionary $(top_srcdir)/libsrc/gauche/dictionary.scm


# gauche.parameter
gauche-parameter_OBJECTS = gauche--parameter.$(OBJEXT)

gauche--parameter.$(SOEXT) : $(gauche-parameter_OBJECTS)
	$(MODLINK) gauche--parameter.$(SOEXT) $(gauche-parameter_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--parameter.c parameter.sci : $(top_srcdir)/libsrc/gauche/parameter.scm
	$(PRECOMP) -e -P -o gauche--parameter $(top_srcdir)/libsrc/gauche/parameter.scm

# gauche.hook
gauche-hook_OBJECTS = gauche--hook.$(OBJEXT)

gauche--hook.$(SOEXT) : $(gauche-hook_OBJECTS)
	$(MODLINK) gauche--hook.$(SOEXT) $(gauche-hook_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--hook.c hook.sci : $(top_srcdir)/libsrc/gauche/hook.scm
	$(PRECOMP) -e -P -o gauche--hook $(top_srcdir)/libsrc/gauche/hook.scm

# gauche.record
gauche-record_OBJECTS = gauche--record.$(OBJEXT)

gauche--record.$(SOEXT) : $(gauche-record_OBJECTS)
	$(MODLINK) gauche--record.$(SOEXT) $(gauche-record_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--record.c record.sci : $(top_srcdir)/libsrc/gauche/record.scm
	$(PRECOMP) -e -P -o gauche--record $(top_srcdir)/libsrc/gauche/record.scm

# gauche.generator
gauche-generator_OBJECTS = gauche--generator.$(OBJEXT)

gauche--generator.$(SOEXT) : $(gauche-generator_OBJECTS)
	$(MODLINK) gauche--generator.$(SOEXT) $(gauche-generator_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--generator.c generator.sci : $(top_srcdir)/libsrc/gauche/generator.scm
	$(PRECOMP) -e -P -o gauche--generator $(top_srcdir)/libsrc/gauche/generator.scm

# gauche.unicode
#  NB: unicode_attr.h can be autogenerated by src/gen-unicode.scm.

gauche-unicode_OBJECTS = gauche--unicode.$(OBJEXT)

gauche--unicode.$(SOEXT) : $(gauche-unicode_OBJECTS)
	$(MODLINK) gauche--unicode.$(SOEXT) $(gauche-unicode_OBJECTS) $(EXT_LIBGAUCHE) $(LIBS)

gauche--unicode.c unicode.sci : unicode.scm
	$(PRECOMP) -e -P -o gauche--unicode $(srcdir)/unicode.scm

gauche--unicode.$(OBJEXT) : gauche--unicode.c $(top_builddir)/src/gauche/priv/unicode_attr.h



install : install-std

